Tutorial: Create Your First PDF Project
In this tutorial, you will create a C/C++ Linux console application and use ImageGear to load PDF image and convert it to a new raster format.
- Create file ig_sample.cpp with the content below using gedit Linux utility:
C++ |
Copy Code
|
#include <iostream>
#include "gear.h"
#include "i_PDF.h"
int main(int argc, char* argv[])
{
// Number of ImageGear errors that occurred
AT_ERRCOUNT nErrCount = 0;
// Image handle
HIGEAR hImage = (HIGEAR)NULL;
// By default, save the image as BMP uncompressed
AT_LMODE outputFormat = IG_SAVE_BMP_UNCOMP;
if (argc < 3)
{
std::cout << "Usage: ./ig_sample <input_pdf_file> <output_file> <output_format>\n";
std::cout << "Where output_format can be BMP, PNG, JPG, TIF\n";
exit(1);
}
if (argc >= 4) // output format has been passed
{
if (strcmp(argv[2], "BMP") == 0)
outputFormat = IG_SAVE_BMP_UNCOMP;
else if (strcmp(argv[3], "PNG") == 0)
outputFormat = IG_SAVE_PNG;
else if (strcmp(argv[3], "JPG") == 0)
outputFormat = IG_SAVE_JPG;
else if (strcmp(argv[3], "TIF") == 0)
outputFormat = IG_SAVE_TIF_UNCOMP;
}
// Initialize ImageGear
nErrCount = IG_initialize(NULL, 0, FALSE);
if (nErrCount != 0)
{
exit(-1);
}
// License ImageGear with a Runtime License
// Uncomment the next three lines and update all the parameters to
// these licensing functions to use Runtime Licensing
//IG_lic_solution_name_set("YourSolutionName");
//IG_lic_solution_key_set(12345, 12345, 12345, 12345);
//IG_lic_OEM_license_key_set("2.0...");
// Initialize PDF component
IG_comm_comp_attach("PDF");
IG_PDF_initialize(NULL);
// Load image file
nErrCount = IG_load_file(argv[1], &hImage);
if (nErrCount != 0)
{
exit(-1);
}
// Check if loaded image is valid
if (IG_image_is_valid(hImage))
{
// Rasterize PDF image
HIGEAR hImageRasterized;
nErrCount = IG_vector_data_to_dib(hImage, &hImageRasterized);
if (nErrCount == 0)
{
// Save the PDF image with the new raster format
nErrCount = IG_save_file(hImageRasterized, argv[2], outputFormat);
// Delete rasterized image
IG_image_delete(hImageRasterized);
}
// Delete the image
IG_image_delete(hImage);
}
if (nErrCount != 0)
{
exit(-1);
}
// Terminate PDF component
IG_PDF_terminate();
// Close ImageGear
IG_close(NULL);
return 0;
}
|
The above sample takes at least two arguments, an input PDF filename and an output image filename where the resulting output image will be stored.
A third optional parameter may be used to specify the format of the output image file.
By default, the output format is BMP.
C++ |
Copy Code
|
#include "gear.h"
#include "i_PDF.h"
|
The header files that are necessary for the main ImageGear functionality and for working with PDF component.
C++ |
Copy Code
|
// Initialize ImageGear
nErrCount = IG_initialize(NULL, 0, FALSE);
|
This function initializes the ImageGear engine. This line is required before any other ImageGear function calls on Linux.
|
Copy Code
|
// License ImageGear
|
To unlock the toolkit for deployment, you must call the IG_lic_solution_name_set(), IG_lic_solution_key_set() and possibly the IG_lic_OEM_license_key_set() functions.
See Licensing section for more details.
C++ |
Copy Code
|
// Initialize PDF component
IG_comm_comp_attach("PDF");
IG_PDF_initialize(NULL);
|
The first function attaches the PDF component to the main ImageGear module. The second one initializes the PDF engine.
C++ |
Copy Code
|
// Load image file
nErrCount = IG_load_file(argv[1], &hImage);
|
This function loads the input image. The first parameter is the name of the image file. The second parameter is a returned handle to the loaded image. This handle is used in all subsequent operations on the loaded image.
C++ |
Copy Code
|
// Check if loaded image is valid
if (IG_image_is_valid(hImage))
|
This function checks whether the image handle is valid or not.
C++ |
Copy Code
|
// Rasterize PDF image
HIGEAR hImageRasterized;
nErrCount = IG_vector_data_to_dib(hImage, &hImageRasterized);
|
This function flushes the PDF data to device independent raster format and returns a handle of new raster image in hImageRasterized argument.
C++ |
Copy Code
|
// Save the rotated image with the new raster format
nErrCount = IG_save_file(hImageRasterized, argv[2], outputFormat);
|
This function saves the rasterized image to the specified file in the specified format.
C++ |
Copy Code
|
// Delete the image
IG_image_delete(hImage);
|
This function deletes the image handle after it is no longer needed and releases all the memory used by the image.
C++ |
Copy Code
|
// Terminate PDF component
IG_PDF_terminate();
|
This function de-initializes the PDF engine.
C++ |
Copy Code
|
// Close ImageGear
IG_close(NULL);
|
This function closes ImageGear and should be called before the application program exits.
- Create CMakeList.txt file with the following content:
|
Copy Code
|
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(ig_sample)
# relative path to your ImageGear include directory;
include_directories(${CMAKE_SOURCE_DIR}/../../include)
# relative path to your ImageGear bin directory;
link_directories(${CMAKE_SOURCE_DIR}/../../bin/)
# reference to main ImageGear library IGCORE18
set(LIBRARY_NAME IGCORE18)
add_definitions(-D_UNIX64)
# specify input and output files;
add_executable(ig_sample ig_sample.cpp)
# link the program with ImageGear library.
target_link_libraries(ig_sample ${LIBRARY_NAME}
|
- Run the following commands:
cmake.
make
The executable file, ig_sample, will be created in the current directory.
- Copy any valid PDF file to the current directory (say, sample.pdf) and run the program:
|
Copy Code
|
./ig_sample sample.pdf sample.png PNG
|
The file, sample.pdf, will be loaded, rasterized and saved as a PNG image in sample.png.